iT邦幫忙

2024 iThome 鐵人賽

DAY 6
1
佛心分享-SideProject30

從卡關到通關的Spring Boot 腦內風暴系列 第 6

讓資料庫活起來—Entity 常用標註

  • 分享至 

  • xImage
  •  

資料庫操作是非常重要的環節,而建立實體是操作資料庫基礎,透過JPA可以很便利的將類映射到資料庫表,並透過註解來操作資料庫。

實體建立的方式

首先要先建立核心的部分——實體,通常有兩種做法:

  1. 先建立資料庫的表,再於程式中建立對應的類,這種適合已
  2. 先透過程式編寫類,再由程式啟動自動生成資料庫表,這種更符合關係映射(ORM)設計理念,開發者將專注於業務邏輯,不用過度關注資料庫細節。

第二種方法更符合領域驅動設計(DDD,Domain-Driven Design),由程式邏輯主導資料結構,更能靈活實現且易於擴展架構。
當使用 JPA 並將 spring.jpa.generate-ddl=true 配置啟用時,系統會根據實體類自動生成資料庫表結構。如果設置為 false,則不會自動生成表,適合手動建立資料庫表

JPA簡介

JPA(Java Persistence API)是Java實現ORM關係映射的規範,讓開發者能用物件導向的方式操作資料庫,不用直接編寫SQL語句,簡化資料持久化流程。
JPA屬於標準接口,常見的框架實現有Hibernate,開發者不用了解操作的實際邏輯,透過JPA與框架來管理操作資料庫。

常見的JPA註解

在實體類Entity當中,除了賦予對應欄位的屬性,還必須使用一些JPA註解,使框架能正確管理資料表結構與關聯。以下是常見使用的註解

  • @Entity:表示該類是實體類,用來映射資料庫的表。
  • @Table:指定實體對應的資料表名稱,若沒有指定則會默認將類名當作表格名。
  • @Id:表示該屬性映射為主鍵欄位。
    @GenerateValue跟著Id鍵,標註主鍵生層策略,像是自增ID、序列等等。
  • @Basic:默認映射到資料庫中,預設都有,所以通常不會特別標註。可設置讀取策略 fetch=EAGER 或 fetch=LAZY,前者是主動讀取,後者為延遲讀取,僅在需要時才讀取數據。
  • @Column:定義資料庫表格欄位的細節,例如名稱、長度、是否能為null等等。
  • @Transient:代表該屬性不會被持久化於資料庫中。
  • @JsonBackReference/@JsonManagedReference:在處理雙向關聯時,避免 JSON序列化時的循環引用。

綜合上述,使用JPA能夠提高開發效率,也能有效實現資料庫操作,讓開發者能輕鬆將資料庫與應用程式映射互動。


上一篇
跟東坡肉一樣有三層—解剖MVC分層架構
下一篇
不用剪但要理的多角關係—實體關係
系列文
從卡關到通關的Spring Boot 腦內風暴30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言